package com.kaizeli.website.service;

import com.kaizeli.website.pojo.dto.AcceptanceMemberDTO;
import com.kaizeli.website.pojo.dto.ProjectAcceptanceDTO;
import com.kaizeli.website.pojo.vo.ProjectBasicInfoVO;
import com.kaizeli.website.pojo.vo.ProjectCardVO;

import java.util.List;

/**
 * 项目卡片服务接口
 */
public interface ProjectCardService {
    
    /**
     * 获取项目卡片列表（按项目编号分组统计）
     * 用于项目立项和项目结算页面
     * 
     * @return 项目卡片列表
     */
    List<ProjectCardVO> getProjectCards();
    
    /**
     * 根据项目状态获取项目卡片列表
     * 
     * @param status 项目状态
     * @return 项目卡片列表
     */
    List<ProjectCardVO> getProjectCardsByStatus(String status);
    
    /**
     * 根据客户ID获取项目卡片列表
     * 
     * @param customerId 客户ID
     * @return 项目卡片列表
     */
    List<ProjectCardVO> getProjectCardsByCustomer(Long customerId);
    
    /**
     * 根据签约公司ID获取项目卡片列表
     * 
     * @param contractCompanyId 签约公司ID
     * @return 项目卡片列表
     */
    List<ProjectCardVO> getProjectCardsByContractCompany(Long contractCompanyId);
    
    /**
     * 根据项目编号获取子项目列表
     * 
     * @param projectCode 项目编号
     * @return 子项目列表
     */
    List<ProjectBasicInfoVO> getSubProjectsByProjectCode(String projectCode);
    
    /**
     * 根据项目编号获取验收单列表
     * 
     * @param projectCode 项目编号
     * @return 验收单列表
     */
    List<ProjectAcceptanceDTO> getAcceptancesByProjectCode(String projectCode);
    
    /**
     * 根据验收单ID获取验收成员列表
     * 
     * @param acceptanceId 验收单ID
     * @return 验收成员列表
     */
    List<AcceptanceMemberDTO> getAcceptanceMembers(Long acceptanceId);
    
    /**
     * 根据项目编号获取分包项目列表
     * 
     * @param projectCode 项目编号
     * @return 分包项目列表
     */
    List<ProjectBasicInfoVO> getSubcontractProjectsByProjectCode(String projectCode);
}
